package cn.dai.service;

import cn.dai.dao.MenuDao;
import cn.dai.pojo.Menu;
import cn.dai.service.model.Page;

import java.util.List;

/**
 * @author ArkD42
 * @file RBAC
 * @create 2020 - 06 - 13 - 21:36
 */
public class MenuServiceImpl implements MenuService{

    private MenuDao menuDao;

    public MenuServiceImpl(MenuDao menuDao) {
        this.menuDao = menuDao;
    }

    @Override
    public List<Menu> getMenusOwnedByThisRole(Integer roleId) {

        // 查询拥有的主菜单列表
        List<Menu> mainMenus = menuDao.queryMainMenusByRoleIdAssociate(roleId);

        // 创建父菜单编号的数组
        Integer[] parentIds = new Integer[mainMenus.size()];

        // 装填主菜单的编号
        for (int i = 0; i < parentIds.length; i++) {
            parentIds[i] = mainMenus.get(i).getM_id();
        }
        List<Menu> subMenus = menuDao.querySubMenusByParentId(parentIds);

        mainMenus.addAll(subMenus);

        // List<Menu> thisRoleAllMenus = mainMenus;
        return mainMenus;
    }

    @Override
    public Page<Menu> getMenuPages(Integer pageIndex) {
        Page<Menu> menuPage = new Page<>();
        // 由指定页参数，先注入指定页
        menuPage.setPageIndex(pageIndex);
        // 然后从数据库查询多少记录
        menuPage.setTotals( menuDao.queryMenuTotals());
        //设置每页的记录数量
        menuPage.setPageSize(10);
        // 注入每页的记录数量，求得多少页
        menuPage.setTotalPages(menuPage.getPageSize());
        // 然后就能获取到分页了
        menuPage.setCurrentList(
                menuDao.queryMenusByLimit(
                        (menuPage.getPageIndex() - 1) * menuPage.getPageSize(),
                        menuPage.getPageSize()
                )
        );
        return menuPage;
    }
}
